package com.lingx.web.api.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import com.lingx.model.impl.DefaultEntity;
import com.lingx.model.impl.DefaultField;
import com.lingx.service.LingxService;
import com.lingx.service.ModelService;
import com.lingx.web.api.IApi;

@Component
public class Api9024 extends AbstractDevApi implements IApi {
	@Resource
	private JdbcTemplate jdbcTemplate;
	@Resource
	private LingxService lingxService;
	@Resource
	private ModelService modelService;

	@Override
	public int getApiCode() {
		return 9024;
	}

	@Override
	public String getApiName() {
		return "获取数据权限条件";
	}

	@Override
	public Map<String, Object> api(Map<String, Object> params) {
		Map<String, Object> ret = IApi.getRetMap(1, "操作成功");
		String ecode = IApi.getParamString(params, "ecode", "");
		DefaultEntity entity=this.modelService.getEntity(ecode);
		ret.put("left", this.leftMenu(entity));
		ret.put("right", this.rightMenu(entity));
		return ret;
	}

	public List<Map<String, String>> leftMenu(DefaultEntity entity) {
		List<Map<String, String>> list = new ArrayList<Map<String, String>>();
		Map<String, String> map = new HashMap<String, String>();
		map.put("text", "当前用户");
		map.put("value", "{currentUser}");
		list.add(map);
		//map = new HashMap<String, String>();
		//map.put("text", "当前组织");
		//map.put("value", "{currentOrg}");
		//list.add(map);
		
//		map = new HashMap<String, String>();
//		map.put("text", "当前应用");
//		map.put("value", "{currentApp}");
//		list.add(map);

		map = new HashMap<String, String>();
		map.put("text", "-");
		map.put("value", "-");
		list.add(map);

		for (DefaultField f : entity.getFields().getList()) {

			map = new HashMap<String, String>();
			map.put("text", "对象." + f.getName());
			map.put("value", f.getCode());
			list.add(map);
		}

		map = new HashMap<String, String>();
		map.put("text", "-");
		map.put("value", "-");
		list.add(map);
		
		List<Map<String,Object>> listRoles=this.jdbcTemplate.queryForList("select id value,name text from tlingx_role order by orderindex asc");
		for(Map<String,Object> role:listRoles) {
			map = new HashMap<String, String>();
			map.put("text", "角色:"+role.get("text").toString());
			map.put("value", role.get("value").toString());
			list.add(map);
		}
		
		return list;
	}

	public List<Map<String, String>> rightMenu(DefaultEntity entity) {
		List<Map<String, String>> list = new ArrayList<Map<String, String>>();
		Map<String, String> map;
//
//		map = new HashMap<String, String>();
//		map.put("text", "授权组织ID拼接");
//		map.put("value", "{authOrg2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "授权角色ID拼接");
//		map.put("value", "{authRole2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "当前用户所在组织ID拼接");
//		map.put("value", "{currentOrg2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "当前角色ID拼接");
//		map.put("value", "{currentRole2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "行政组织及所有下级ID拼接");
//		map.put("value", "{subOrg2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "应用组织及所有下级ID拼接");
//		map.put("value", "{appOrg2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "角色组织及所有下级ID拼接");
//		map.put("value", "{roleOrg2}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "-");
//		map.put("value", "-");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "授权组织");
//		map.put("value", "{authOrg}");
//		list.add(map);
//		map = new HashMap<String, String>();
//		map.put("text", "授权角色");
//		map.put("value", "{authRole}");
//		list.add(map);
//		map = new HashMap<String, String>();
//		map.put("text", "授权权限");
//		map.put("value", "{authFunc}");
//		list.add(map);
//		map = new HashMap<String, String>();
//		map.put("text", "授权菜单");
//		map.put("value", "{authMenu}");
//		list.add(map);
//
//		map = new HashMap<String, String>();
//		map.put("text", "-");
//		map.put("value", "-");
//		list.add(map);

		map = new HashMap<String, String>();
		map.put("text", "当前用户=");
		map.put("value", "{currentUser}");
		list.add(map);

		//map = new HashMap<String, String>();
		//map.put("text", "当前用户主岗组织=");
		//map.put("value", "{currentUserOrg}");
		//list.add(map);

		map = new HashMap<String, String>();
		map.put("text", "当前用户角色组织in");
		map.put("value", "{currentRoleOrg}");
		list.add(map);

		//map = new HashMap<String, String>();
		//map.put("text", "当前用户所在组织");
		//map.put("value", "{currentOrg}");
		//list.add(map);

		//map = new HashMap<String, String>();
		//map.put("text", "主岗组织及所有子节点in");
		//map.put("value", "{subOrg}");
		//list.add(map);

		//map = new HashMap<String, String>();
		//map.put("text", "应用组织及所有子节点");
		//map.put("value", "{appOrg}");
		//list.add(map);

		//map = new HashMap<String, String>();
		//map.put("text", "角色组织及所有子节点in");
		//map.put("value", "{roleOrg}");
		//list.add(map);

		map = new HashMap<String, String>();
		map.put("text", "当前角色in");
		map.put("value", "{currentRole}");
		list.add(map);
		//map = new HashMap<String, String>();
		//map.put("text", "当前应用");
		//map.put("value", "{currentApp}");
		//list.add(map);

		//map = new HashMap<String, String>();
		//map.put("text", "正开发应用");
		//map.put("value", "{currentDevApp}");
		//list.add(map);

		map = new HashMap<String, String>();
		map.put("text", "-");
		map.put("value", "-");
		list.add(map);
		for (DefaultField f : entity.getFields().getList()) {

			map = new HashMap<String, String>();
			map.put("text", "对象." + f.getName());
			map.put("value", f.getCode());
			list.add(map);
		}

		map = new HashMap<String, String>();
		map.put("text", "-");
		map.put("value", "-");
		list.add(map);
		List<Map<String, Object>> listEntity = this.jdbcTemplate
				.queryForList("select * from tlingx_entity where type=3 and status=1");
		for (Map<String, Object> temp : listEntity) {
			entity = modelService.getEntity(temp.get("code").toString());
			for (DefaultField f : entity.getFields().getList()) {
				map = new HashMap<String, String>();
				map.put("text", temp.get("name") + "." + f.getName());
				map.put("value", temp.get("code").toString() + "." + f.getCode());
				list.add(map);
			}
		}

		map = new HashMap<String, String>();
		map.put("text", "-");
		map.put("value", "-");
		list.add(map);
		for (int i = 0; i < 10; i++) {
			map = new HashMap<String, String>();
			map.put("text", String.valueOf(i));
			map.put("value", String.valueOf(i));
			list.add(map);
		}
		return list;
	}
}
